/** * * Copyright (c) 2006-2017, Speedment, Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); You may not * use this file except in compliance with the License. You may obtain a copy of * the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.speedment.tool.core.util; import com.speedment.common.injector.Injector; import com.speedment.runtime.core.component.InfoComponent; import com.speedment.tool.core.brand.Brand; import com.speedment.tool.core.component.UserInterfaceComponent; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Stage; import static com.speedment.runtime.core.util.StaticClassUtil.instanceNotAllowed; /** * * @author Emil Forslund * @since 2.3.0 */ public final class BrandUtil { public static void applyBrand(Injector injector, Stage stage) { applyBrand(injector, stage, stage.getScene()); } public static void applyBrand(Injector injector, Stage stage, Scene scene) { applyBrandToStage(injector, stage); final Brand brand = injector.getOrThrow(Brand.class); final InfoComponent info = injector.getOrThrow(InfoComponent.class); apply(brand, info, stage, scene); } public static void applyBrandToStage(Injector injector, Stage stage) { final InfoComponent info = injector.getOrThrow(InfoComponent.class); final Brand brand = injector.getOrThrow(Brand.class); stage.setTitle(info.getTitle()); brand.logoSmall() .map(Image::new) .ifPresent(stage.getIcons()::add); } public static void applyBrandToScene(Injector injector, Scene scene) { final Brand brand = injector.getOrThrow(Brand.class); final UserInterfaceComponent ui = injector.getOrThrow(UserInterfaceComponent.class); final InfoComponent info = injector.getOrThrow(InfoComponent.class); final Stage stage = scene.getWindow() == null ? ui.getStage() : (Stage) scene.getWindow(); apply(brand, info, stage, scene); } private static void apply(Brand brand, InfoComponent info, Stage stage, Scene scene) { if (stage != null) { stage.setTitle(info.getTitle()); } brand.logoSmall() .map(Image::new) .ifPresent(icon -> { if (stage != null) { stage.getIcons().add(icon); } @SuppressWarnings("unchecked") final Stage dialogStage = (Stage) scene.getWindow(); if (dialogStage != null) { dialogStage.getIcons().add(icon); } }); brand.stylesheets().forEachOrdered(scene.getStylesheets()::add); } /** * Utility classes should not be instantiated. */ private BrandUtil() { instanceNotAllowed(getClass()); } }